package com.yq.day28;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/28 14:59
 */
public class Demo03 {
    public static void main(String[] args) {
        Sell3 m1 = new Sell3();

        // Thread t1 = new Thread(m1);
        // Thread t2 = new Thread(m1);
        // Thread t3 = new Thread(m1);
        //
        // t1.setName("a窗口");
        // t2.setName("b窗口");
        // t3.setName("c窗口");
        //
        // t1.start();
        // t2.start();
        // t3.start();
        new Thread(m1, "A").start();
        new Thread(m1, "B").start();
        new Thread(m1, "C").start();

    }
}


class Sell3 implements Runnable {
    // int tickets = 100;
    static int tickets = 100;
    Object o = new Object();

    // @Override
    // public void run() {
    //     while (true) {
    //         //同步代码块 什么随想可以充当锁的角色
    //         //必须是同一个，不然锁不住
    //         synchronized (o){
    //             //共享数据的访问操作
    //             if (tickets > 0) {
    //                 try {
    //                     Thread.sleep(200);
    //                 } catch (InterruptedException e) {
    //                     e.printStackTrace();
    //                 }
    //                 System.out.println(Thread.currentThread().getName() + "卖了" + (tickets--) + "票");
    //             }
    //         }
    //
    //
    //     }
    //
    //
    // }
    int i = 0;

    @Override
    public void run() {
        while (true) {
            if (i % 2 == 0) {
                synchronized (Sell3.class) {
                    //共享数据的访问操作
                    if (tickets > 0) {
                        try {
                            Thread.sleep(200);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "卖了" + (tickets--) + "票");
                    }
                }
            } else {
                sell();
            }
            i++;
        }
    }

    // 同步方法
    public  static synchronized void sell() {
        //共享数据的访问操作
        if (tickets > 0) {
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "卖了" + (tickets--) + "票");
        }

    }


}